package com.javaBasic;

import java.util.ArrayList;
import java.util.List;

public class BasicData {
    public static void main(String[] args) {
        System.out.println(String.format("Int 取值：%d ~ %d",Integer.MAX_VALUE,Integer.MIN_VALUE));


        List<Integer> list = new ArrayList<>();

        String age = "18";
        int ageInt = Integer.parseInt(age) + 2;
        System.out.println(ageInt);


        method1();
        method2();
    }

    private static void method2() {
        Integer i = 100;//编译为Integer i = Integer.valueOf(100);
        int t = i;//Java虚拟机会自动调用Integer的intValue方法, 编译为：int t=i.Integer.intValue();
        System.out.println(t);
    }

    // 高频区间的数据缓存**
    //
    //此特性为包装类很重要的用途之一，用于高频区间的数据缓存，以 Integer 为例来说，在数值区间为 -128~127
    //时，会直接复用已有对象，在这区间之外的数字才会在堆上产生。
    //高频区域的数值会直接使用已有对象，非高频区域的数值会重新 new 一个新的对象
    private static void method1() {
        // Integer 高频区缓存范围 -128~127
        Integer num1 = 127;
        Integer num2 = 127;
        // Integer 取值 127 == 结果为 true（值127 num1==num2 => true）
        System.out.println("值127 num1==num2 => " + (num1 == num2));
        Integer num3 = 128;
        Integer num4 = 128;
        // Integer 取值 128 == 结果为 false（值128 num3==num4 => false）
        System.out.println("值128 num3==num4 => " + (num3 == num4));
        // Integer 取值 128 equals 结果为 true（值128 num3.equals(num4) => true）
        System.out.println("值128 num3.equals(num4) => " + num3.equals(num4));
    }

}
